/*
   Copyright 2011-2012 gtalent2@gmail.com

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/
package models

type CreatureType struct {
	Name          map[string]string
	Special       bool
	StrongAgainst []string
	WeakAgainst   []string
}

type CreatureClass struct {
	Name          map[string]string
	Successor     string
	Predecessor   string
	Types         []string
	CanLearn      []string
	LearnsAtLevel map[int]string
	FrontView     Animation
	BackView      Animation
}

type CreatureMove struct {
	Name            map[string]string
	Type            string
	Power           int
	RequiresRegarge bool
	Script          string
	Burn            StatusEffect
	Freeze          StatusEffect
	Paralyze        StatusEffect
	Poison          StatusEffect
	Sleep           StatusEffect
}

type CreatureMoveInstance struct {
	CreatureMove int
	PP           Fraction
}

type Creature struct {
	ID            int
	Name          map[string]string
	CreatureClass string
	Male          bool
	Level         int
	Health        Fraction
	Attact        int
	SpecAttack    int
	Defense       int
	SpecDefense   int
	Burned        bool
	Frozen        bool
	Poisoned      bool
	Asleep        bool
	Moves         [4]CreatureMoveInstance
}

type StatusEffect struct {
	AttackerEffect byte
	EnemyEffect    byte
}
